Lector tarjetas (DNIe)

Descripcion

Instalacion del lector de tarjetas para utilizar el dni electronico en Linux

libpkcs11-dnie

Actualización nueva versión AutoFirma

Con la nueva versión 1.7.1 Autofirma ya funciona en Linux incluso con la interfaz gráfica, de todas maneras siguen siendo necesarios algunos arreglos que se indican aquí abajo para hacerlo funcionar.

Podemos descargar la versión mas actualizada de AutoFirma desde aquí: Descarga AutoFirma

Paginas donde usar el DNIe
ValidE
Sergas E-Saude
Sergas cita atencion primaria
Ministerio Educacion
Portal seguridad social
Portal SEPE
Sede Xunta
Ministerio de justicia
Administracion publica
Sede DGT
Consultar titulos NO universitarios
Metodo

Para hacer que funcione el lector de tarjetas debemos de instalar los siguientes paquetes

# zypper in pcsc-tools

Para mi lector de tarjetas el siguiente paquete tambien es necesario

# zypper in pcsc-acsccid

Para comprobar que el lector funciona ejecutamos el siguiente comando:

> pcsc_scan

Al introducir una tarjeta veremos algo como esto:

En caso de que el lector no se detecte veremos algo como esto:

En este caso podemos intentar instalar unos paquetes a mayores:

# zypper in pcsc-acr38 libccid pcscd libacr38u libacr38ucontrol0 libpcsclite1 pinentry-gtk2 pcsc-tools libpcsclite-dev libreadline6 libreadline-dev coolkey
Instalacion DNI electronico (INCOMPLETO)

Para poder utilizar el DNI electronico tenemos que instalar el programa de Autofirma y a mayores la libreria de libpkcs11

Instalacion de Autofirma

Instalamos el paquete de Autofirma y el paquete libpkcs11:

# rpm -i autofirma-1.6.5-1.noarch_SUSE.rpm # rpm -i libpkcs11-dnie-1.6.6-1.x86_64.rpm

NOTA: Si surge algun problema de dependencias las buscamos con zypper y las instalamos

Una vez hecho esto tenemos que resolver unos problemas que tendremos con autofirma, al intentar ejecutarlo desde la consola veremos esto:

Este error se produce porque autofirma carga una libreria de 32 bits cuando el ejecutable es de 64 bits, para subsanar este error podemos hacer este truco:

# ln -s /usr/lib64 /opt/firefox-

Otro error que podemos obtener es este:

Para solucionar este error debemos modificar el archivo .desktop de autofirma para incluirlo como programa por defecto para el protocolo afirma

Buscamos el archivo autofirma.desktop en la ruta /usr/share/applications y en la ruta /usr/local/share/applications (Puede estar en las dos a la vez, es mejor modificarlo en ambos sitios), tendra un contenido como el siguiente:

Incluimos al final del todo la siguiente linea:

MimeType=x-scheme-handler/afirma;

El archivo deberia de quedar asi:

Otro fallo esta el archivo es el archivo /usr/bin/autofirma tendremos que incluir en la primera linea el interprete #!/bin/bash, de manera que el archivo tiene que quedar asi:

#!/bin/bash
java -jar /usr/lib64/autofirma/autofirma.jar $*

Una vez realizados todos los pasos anteriores el DNI electronico deberia de estar listo para ser utilizado por lo menos con el programa de autofirma, a traves del navegador igual harian falta algunas modificaciones en firefox

Firefox

En firefox podemos intentar hacer algunas cosas para hacer funcionar el DNIe, lo primero es instalar el modulo de libpkcs11 en el firefox

En firefox nos vamos a:

Ajustes > Privacidad y seguridad > Dispositivos de seguridad

Una vez dentro le damos a cargar y seleccionamos el siguiente archivo para cargar el modulo (Como nombre podemos poner lo que queramos, yo puse DNIe):

/usr/lib64/libpkcs11-dnie.so

Es importante que solo tengamos este modulo cargado para manejar el lector de tarjetas, un error que cometia antes era tener cargado el modulo dnieopensc-pkcs11.so y este modulo no me permitia usar el dni (cuando firefox intentaba acceder al lector incluso se bloqueaba el propio navegador)

Algunos sitios necesitan que iniciemos sesion con el DNIe desde la pantalla de Dispositivos de seguridad, al darle a Iniciar sesion se nos pedira la contrasenia del DNI:

Una vez hecho esto el DNI electronico deberia de funcionar sin problemas en el navegador (Solo en Firefox), podemos usarlo para autenticarnos en paginas que permitan hacerlo con el DNI electronico (Si queremos firmar archivos tenemos que hacerlo mediante el programa AutoFirma

Tambien podemos verificar el funcionamiento directamente desde aqui:

Verificar DNIe

Una cosa que podemos hacer a mayores si tenemos algun problema es incluir las siguientes Autoridades Certificadoras en el firefox, nos vamos a:

Ajustes > Privacidad y seguridad > Ver Certificados

Le damos a Importar y cargamos estos 3 arhicvos:

AC RAIZ DNIE 2.crt

ACRAIZ-SHA1.cer

ACRAIZ-SHA2.cer

Configurar AutoFirma

Para poder firmar archivos con el DNI 3.0 en linux tenemos que hacer una serie de configuraciones

Primero tenemos que instalar el JDK 8 (Con las versiones mas modernas no funciona)

zypper in java-1_8_0-openjdk java-1_8_0-openjdk-devel

Una vez tengamos instalada esa version de java, vamos a hacer un cambio en el script que lanza el AutoFirma para que se ejecute con esa version de java, modificamos el archivo /usr/bin/autofirma para que quede tal que asi:

#!/bin/bash
/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/bin/java -jar /usr/lib64/autofirma/autofirma.jar $*

Otra de las configuraciones que tenemos que hacer es editar el archivo pkcs11.txt en mi equipo la ruta es ~/.mozilla/firefox/y6tcqn8f.default-esr-1/

NOTA: Para saber la ruta del archivo podemos usar este comando strace autofirma 2>&1 | grep -i "pkcs11.txt"

En este archivo tenemos que incluir la informacion del modulo que cargamos en el firefox, para que autofirma pueda hacer uso de el, el contenido tiene que ser el siguiente:

library=/usr/lib64/libpkcs11-dnie.so
name=DNIe

Una vez realizados estos cambios deberiamos de poder firmar archivos, tenemos que hacerlo desde la consola, a traves de la interfaz grafica da error

Para firmar archivos:

> autofirma sign -i <archivo a firmar> -o <Archivo salida> -certgui

Para verificar firmas:

> autofirma verify -i <archivo a verificar>

NOTA: Los archivos que se van a verificar no pueden tener espacios en su nombre...

Podemos usar un script como el siguiente para tener una interfaz grafica para firmar y ver firmas de archivos:

autofirmascript

TroubleShooting AutoFirma

Cuando intentamos acceder a la información del certificado de un archivo firmado obtenemos el siguiente error:

Para solucionar este error y que se muestre la información del certificado hacemos lo siguiente:

Primero dentro de la carpeta /usr/local/share/applications creamos un archivo certView.desktop con el siguiente contenido:

[Desktop Entry]
Encoding=UTF-8
Version=1
Type=Application
Terminal=true
Categories=Office;Utilities;Signature
Exec=/home/jericho/certView.sh %U
Name=CertView
MimeType=application/pkix-cert;

Despues en nuestra carpeta personal en mi caso /home/jericho creamos el archivo certView.sh con el siguiente contenido:

#!/bin/bash
openssl x509 -in $1 -inform der -text | less

Y le damos permisos de ejecucion:

chmod +x certView.sh

Para terminar, en el archivo ~/.config/mimeapps.list añadimos la siguiente linea para que se ejecute el archivo desktop que acabamos de crear asociado con los archivos application/pkix-cert (.cer):

application/pkix-cert=certView.desktop

Una vez hecho todo esto al intentar abrir la información del certificado se abrirá una terminal con la información que nos da el comando openssl sobre el certificado.

DNI 3.0 en Linux

El DNI 2.0 deberia de funcionar bien en linux, si necesidad de hacer tantos ajustes (Incluso con la interfaz grafica del autofirma), el problema es que el DNI 3.0 funciona muy mal, solo se pueden firmar archivos desde la interfaz de la consola que funciona bastante mal y nisiquiera te permite incluir los datos firmados en la propia firma (En la interfaz grafica lo hace por defecto, quiza por eso falla al usarla).

De todas maneras para usar el DNI 3.0 desde el navegador (Solo Firefox) deberia de funcionar bien para autenticarse en paginas webs y demas

Enlaces

DNI 3.0 mision imposible
Starting to play with DNIe 3.0 and OpenSC
DNIe 3.0 is now supported by OpenSC
INSTALAR EL CERTIFICADO DIGITAL Y AUTOFIRMA EN UBUNTU

Tags

DNIe | 3.0 | Lector tarjetas | smartcard | opensc